﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SistemaBastanteo.Negocio;
using SistemaBastanteo.Dominio;

namespace SistemaBastanteo.Controllers
{
    public class ConsultarPoderController : Controller
    {
        //
        // GET: /VerificarPoder/
        public IBastanteoService BastanteoService { get; set; }
        public IMantenimientoService AdminService { get; set; }

        public ActionResult Index()
        {
            TempData["tipoIntervencion"] = ListarTipoIntervencion();
            TempData["representantes"] = ListarRepresentante(0);
            TempData["grupos"] = ListarGrupos(0);
            return View();
        }

        public ActionResult Listado(ICollection<Bastanteo> modelo)
        {
            
            return View("Listado", modelo);
        }


        //
        // POST: /Cliente/Search
        [HttpPost]
        public ActionResult Search(FormCollection collection)
        {
            string ruc = collection["Ruc"];
            ICollection<Cliente> Lista = AdminService.ObtenerClientePorRUC(ruc);
            if (Lista.Count > 0)
            {
                Cliente cliente = Lista.First<Cliente>();
                ViewData["Codigo"] = cliente.Codigo;
                ViewData["Ruc"] = cliente.Ruc;
                ViewData["RazonSocial"] = cliente.RazonSocial;
                
                TempData["tipoIntervencion"] = ListarTipoIntervencion();
                TempData["representantes"] = ListarRepresentante(cliente.Codigo);
                TempData["grupos"] = ListarGrupos(cliente.Codigo);

                //ICollection<Bastanteo> modelo = AdminService.ListarRepresentante(cliente.Codigo);
                //return View("Index", modelo);
                
                return View("Index");
            }
            else
            {

                return View("Index");

            }


        }

        // POST: /Cliente/Search2
        [HttpPost]
        public ActionResult Search2(FormCollection collection)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    int cliente = int.Parse(collection["Codigo"]);
                    string ruc = (string) collection["Ruc"];
                    string grupo = "";
                    string tipo = "";
                    if (collection["CodigoRepresentante"] == null || collection["CodigoRepresentante"] == string.Empty)
                        throw new Exception("Seleccione un Representante");
                    int representante = int.Parse(collection["CodigoRepresentante"]);

                    if (collection["CodigoTipo"] == null || collection["CodigoTipo"] == string.Empty){
                        if (collection["CodigoGrupo"] == null || collection["CodigoGrupo"] == string.Empty)
                            throw new Exception("Seleccione un Codigo de Grupo");
                    }else{
                        
                    }
                    
                    if (collection["CodigoGrupo"] == null || collection["CodigoGrupo"] == string.Empty){
                         if (collection["CodigoTipo"] == null || collection["CodigoTipo"] == string.Empty)
                            throw new Exception("Seleccione un Tipo");
                    }else{
                        
                    }
                    grupo = collection["CodigoGrupo"];
                    tipo = collection["CodigoTipo"];
                    

                    ICollection<Bastanteo> modelo = new List<Bastanteo>();

                    if( grupo !=null && grupo != ""){
                        modelo = BastanteoService.ConsultarPoderesPorGrupo(ruc,representante, grupo);
                    }
                    if( tipo !=null && tipo != ""){
                        modelo = BastanteoService.ConsultarPoderesPorTipo(ruc,representante, tipo);
                    }
                    
                    //return //View("Listado", modelo);
                    return Listado(modelo);
                
                }else{
                    return View("Index");
                }
                
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(String.Empty, ex.Message);
                //TempData["tiposEmpresa"] = ListarTiposEmpresa();
                //return View();
                return Search(collection);// View();
            }

        }

        private ICollection<SelectListItem> ListarPoderes()
        {
            ICollection<SelectListItem> poderes = new List<SelectListItem>();
            poderes.Add(new SelectListItem() { Value = string.Empty, Text = "Seleccione..." });
            foreach (Poder poder in AdminService.ListarPoder())
                poderes.Add(new SelectListItem() { Value = poder.Codigo.ToString(), Text = poder.Descripcion });

            return poderes;

        }
        private ICollection<SelectListItem> ListarRepresentante(int cliente)
        {
            ICollection<SelectListItem> representantes = new List<SelectListItem>();
            representantes.Add(new SelectListItem() { Value = string.Empty, Text = "Seleccione..." });
            foreach (Representante rep in AdminService.ListarRepresentante(cliente))
            {
                
                    representantes.Add(new SelectListItem() { Value = rep.Codigo.ToString(), Text=rep.Apellidos + ", "+ rep.Nombres });
                
            }
            return representantes;
        }
       private ICollection<SelectListItem> ListarTipoIntervencion()
        {
            ICollection<SelectListItem> TiposDocumento = new List<SelectListItem>();
            TiposDocumento.Add(new SelectListItem() { Value = string.Empty, Text = "Seleccione..." });
            TiposDocumento.Add(new SelectListItem() { Value = "A Sola Firma", Text = "A Sola Firma" });
            TiposDocumento.Add(new SelectListItem() { Value = "En Conjunto Con", Text = "En Conjunto Con" });
            return TiposDocumento;
        }

         private ICollection<SelectListItem> ListarGrupos(int cliente)
        {
            ICollection<SelectListItem> Grupos = new List<SelectListItem>();
            Grupos.Add(new SelectListItem() { Value = string.Empty, Text = "Seleccione..." });
            foreach (String grupo in BastanteoService.ListarGrupos(cliente))
            {
                if (grupo != null)
                {
                    Grupos.Add(new SelectListItem() { Value = grupo.ToString(), Text = grupo.ToString() });
                }
            }
            return Grupos;
        }

    }

    }

